/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"6EF676C3-9997-459D-9973-DEB2D90CB241",variableType:8}
 */
var descuento_imp = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"87F7DA9D-DAE0-4F5F-847F-6EFB136645A8",variableType:4}
 */
var es_nro_manual = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"191FC7ED-C615-47DF-A89F-9E40F14827A9",variableType:4}
 */
var es_preview = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"06A1227E-5FB7-4B17-AF68-EE9C176A6B7F",variableType:8}
 */
var iva1_imp_cc = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"45D0C80B-5474-4505-A70E-E55DFCFC23AA",variableType:8}
 */
var neto_cc = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"82C261A6-296D-4A74-8F06-5B3C461331C2",variableType:8}
 */
var neto_no_gravado_cc = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"CEA86DDF-A245-40CF-8C7B-B64BEF5939FE",variableType:4}
 */
var nota = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"071CF479-1532-4DE3-8E42-3D5F4B727CC9",variableType:8}
 */
var total_cc = null;

/**
 * @properties={typeid:24,uuid:"C9837BFE-8D5D-4553-8B68-B31C986EC192"}
 * @AllowToRunInFind
 */
function confirmar()
{
	////llenar todos los campos de cabecera que no se piden
	forms.facauto.calculo_total()  // recalcula los totales
	//// que va en los siguientes campos?
	titulos= ' ' 
	formato= 0   
	pdf=null
	codigo_afip=null
	cai=null
	importe_en_letras=globals.nro_a_letra(total);
	if (nota==1)       //1=credito 2=debito valuelist de pantalla
  	{
		tipo_doc=2; 
		cod_mov_cc=41;
  	}
	else
  	{
		tipo_doc=3; 
		cod_mov_cc=42;
  	}
   
    if (es_nro_manual==0)
    {  //no es manual
	//// buscar numero de factura de la sucursal/letra/tipo docum que corresponde
		var fs_nro_fc = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'numeracion_cl')
		fs_nro_fc.loadAllRecords()
		fs_nro_fc.find()
		fs_nro_fc.sucursal=sucursal
		fs_nro_fc.letra=letra
		fs_nro_fc.cod_comprobante=fac_cabecera_to_tipo_doc.cod_doc_asociado
		var found=fs_nro_fc.search()
		if (found != 1)
    	{
	   		globals.DIALOGS.showWarningDialog('Aviso','Sucursal o Letra o Tipo de comprobante incorrectos','OK')
	  	 	return false;  
    	}
    	else
    	{	
	 	 	fs_nro_fc.setSelectedIndex(1);
	 		var nro_aux= fs_nro_fc.ultimo_numero + 1;
		}
    }
    // si es manual en campo nro_factura tiene el valor ingresado
    else // es manual  
    {
    	nro_aux=nro_factura;
    }
    // validar si existe en fac_cabecera  01/10/2010
	globals.fac_cabecera_duplicacion(letra,sucursal,nro_aux)
	if (globals.fact_filas!=0)  // si es cero, la factura no existe
		{ // ya existe , lo rechaza
		globals.DIALOGS.showWarningDialog('Aviso','Ya existe ' + fac_cabecera_to_tipo_doc.descripcion + ' ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_aux,'00000000'),'OK')
		return false;
		}
	
    if (es_nro_manual==0)  
    {  //no es manual y no existe, asigna sig. numero
		fs_nro_fc.ultimo_numero = fs_nro_fc.ultimo_numero + 1
		nro_factura=fs_nro_fc.ultimo_numero // poner nro factura en renglon
    } 
		  
    /////////////////////////////////////////////////////
	//// armar ctacte  
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.newRecord()
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cliente_id=cliente_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.fecha_mov=fecha
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.nro_factura=nro_factura
	if (nota==1)
		fac_cabecera_to_clientes.clientes_to_ctacte_cl.cod_mov=41;  // credito
	else
		fac_cabecera_to_clientes.clientes_to_ctacte_cl.cod_mov=42;   // debito
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.sucursal=sucursal
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.letra=letra
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.fecha_vto=fecha_vencimiento
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.provincia_id=fac_cabecera_to_clientes.provincia_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cond_pago_id=cond_pago_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.importe=total 
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.saldo=total 
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva=iva1_imp_cc 
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.neto=neto_cc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.neto_no_gravado=neto_no_gravado_cc // 09/06/2010  FC exportacion p/no extranjero
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva_porc=iva1_porc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.tasa_iva_id=fac_cabecera_to_clientes.clientes_to_ctacte_cl.ctacte_cl_to_tasa_iva_porc.tasa_iva_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.tipo_doc=tipo_doc
	

	////desmarcar las fc del form ncyd_viajes_4  para que no queden marcadas 
	for (var i=1;i <= forms.ncyd_viajes_4.controller.getMaxRecordIndex() ;i++)
	{
		forms.ncyd_viajes_4.controller.setSelectedIndex(i);
		if (forms.ncyd_viajes_4.marcado_fac_detalle==1)
			forms.ncyd_viajes_4.marcado_fac_detalle=0;
	}

	var estado=databaseManager.saveData()
	if (estado==true)
	{
		databaseManager.refreshRecordFromDatabase(foundset, 0) // deja el indice correctamente
		databaseManager.refreshRecordFromDatabase(foundset.fac_cabecera_to_fac_detalle, -1) 
		databaseManager.refreshRecordFromDatabase(foundset.fac_cabecera_to_ctacte_cl, -1) 
	
		var resp=globals.DIALOGS.showQuestionDialog('Generador de Notas de viajes', fac_cabecera_to_tipo_doc.descripcion + ' ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_factura,'00000000') +  '\nGenerada correctamente' + '\nImprime:',  "Si", "No" )
		if (resp == 'Si')
		{
			//usar preview hasta que este ok
			es_preview=1
		    forms.fac_cabecera_imp.controller.showPrintPreview(true)
		}
		else  
		{  
			Iniciar()
		}
	}
	else
	{
		globals.DIALOGS.showInfoDialog('Generador de Notas de viajes',  fac_cabecera_to_tipo_doc.descripcion + ' No fue generada - Revise los datos ingresados',  "OK")
		Cancelar()
	}
	return true
}

/**
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"ABFD00F5-3BB1-436A-893F-19D039ADAA1A"}
 */
function ver_cond_iva_cliente() 
{
	//  TODO   revisar muy bien lo sig. Si se cambia de cliente mantenia el viaje del cliente anterior
	fac_cabecera_to_fac_detalle_viajes.deleteAllRecords() // 10/09/2010 
	if (globals.es_fc_exportacion==1)  // 09/06/2010  FC exportacion p/no extranjero
		letra="E"; // 09/06/2010  FC exportacion p/no extranjero
		else // 09/06/2010  FC exportacion p/no extranjero
		letra=fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_letra;
	globals.marca_primer_find = 0;
	ver_existe_ctacte();
	return true
}

/**
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"D5709596-6431-4925-9144-10BE4B7FEA36"}
 */
function calculo_vto() 
{  
	if (fecha != null)
	{
		fecha_vencimiento=fecha		
		fecha_vencimiento=fecha_vencimiento.setDate (fecha.getDate() + fac_cabecera_to_cond_pago.dias);
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Fecha del comprobante no informada','OK')
	}
	return true;
}

/**
 *
 * @properties={typeid:24,uuid:"669AE12D-5A9A-4F7A-A02C-6F2027253D18"}
 * @AllowToRunInFind
 */
function calculo_total() 
{
	//**//falta resolver descuento si es que se va a usar
if (cliente_id!=null)
{	
	if (globals.es_fc_exportacion!=1)  //==0 es FC comun  // 09/06/2010  FC exportacion p/no extranjero
	{// 09/06/2010  FC exportacion p/no extranjero
	//Solo permitir una tasa de iva por factura y tomar % del producto no del emisor	
		/** @type {JSFoundSet<db:/infocom/tasa_iva>}*/
	var fs_tasa_iva = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'tasa_iva')
	fs_tasa_iva.loadAllRecords()
	fs_tasa_iva.find()
	fs_tasa_iva.tasa_iva_id=fac_cabecera_to_fac_detalle_viajes.fac_detalle_to_productos.tasa_iva_id
	var found= fs_tasa_iva.search()
	if (found == 1)
		iva1_porc= fs_tasa_iva.tasa_iva_porc;
	else
		iva1_porc= 0.00;
	
	globals.multi=1; //multiplicador  iva para renglones
	if (fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_calcula == 1)
	{
		if (fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_discrimina == 1) 
			globals.multi= 1; // es A
		else // es B	
			//globals.multi= 1 + (iva1_porc / 100);  //20/10/2010 x redondeo
			globals.multi= 1 + globals.operacion(iva1_porc,'/',100);  //20/10/2010 x redondeo
	}
	else
	{// es E
		iva1_porc=0;
	}
	}// 09/06/2010  FC exportacion p/no extranjero
	else //==1 es FC exportacion sin iva // 09/06/2010  FC exportacion p/no extranjero
	{// 09/06/2010  FC exportacion p/no extranjero
		iva1_porc=0;    // 09/06/2010  FC exportacion p/no extranjero
		globals.multi=1 // 09/06/2010  FC exportacion p/no extranjero
	}// 09/06/2010  FC exportacion p/no extranjero
	
	subtotal1=null;  // suma de renglones
	subtotal2=null;  // suma de renglones con tarifa de referencia  // 16/04/2012
	for ( var i = 1 ; i <= fac_cabecera_to_fac_detalle_viajes.getSize(); i++ )
	{
		fac_cabecera_to_fac_detalle_viajes.setSelectedIndex(i);
		////subtotal1+= fac_cabecera_to_fac_detalle.total_renglon // * globals.multi; //anulado 02/06/2010    //20/10/2010 x redondeo
		subtotal1= globals.operacion(subtotal1,'+',fac_cabecera_to_fac_detalle_viajes.total_renglon)     
		//neto_cc+= fac_cabecera_to_fac_detalle.total_renglon  //anulado 02/06/2010
	} 
	// se quitaron de pantalla los 3 sig. campos antes del iva
	// descuento   poner en cero (en Iniciar) , en onDataChange poner Calculo_total cuando se use
	// descuento_imp = subtotal1 * descuento / 100 
	// subtotal2 = subtotal1 - descuento_imp   // una vez aplicado el descuento
	
	descuento_imp=null   // asumir descuento = 0 
	subtotal2=subtotal1  // asumir descuento = 0   
	
	
	// iva para pie de factura 
	if (fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_discrimina != 1)
	{ //para B y E
		iva1_imp=0.00
		total=subtotal2
		// poner iva1_porc = 0 ?????????????? para que no salga impreso ? 02/06/2010
	}
	else
	{ // para A
		/*iva1_imp=globals.redondeo(subtotal2 * iva1_porc / 100)
		total=subtotal2 + iva1_imp */
		
		/*var aux_iva1_imp=globals.operacion(subtotal2,'*',iva1_porc) //20/10/2010 x redondeo
		 //20/10/2010 x redondeo
		iva1_imp=globals.operacion(aux_iva1_imp,'/', 100);  */
		iva1_imp=globals.operacion(subtotal2,'*',iva1_porc) 
		iva1_imp=globals.operacion(iva1_imp,'/', 100);
		total=globals.operacion(subtotal2,'+',iva1_imp);  //20/10/2010 x redondeo
	}
	// iva para ctacte
	neto_no_gravado_cc=0.00 //07/06/2010
	if (fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_calcula == 1)
	{
		if (fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_discrimina == 1)
		{//  A
			neto_cc=subtotal2
			iva1_imp_cc=iva1_imp
			total_cc=total
		}
		else
		{// B
			/* neto_cc=globals.redondeo(subtotal2 / globals.multi)
			iva1_imp_cc=subtotal2 - neto_cc  */  //20/10/2010 x redondeo
			neto_cc=globals.operacion(subtotal2,'/',globals.multi) //20/10/2010 x redondeo
			iva1_imp_cc=globals.operacion(subtotal2,'-',neto_cc)   //20/10/2010 x redondeo
			total_cc=subtotal2
		}
		//07/06/2010 desde //////////
		if (globals.gIva_factura==0) // en form viajes_a_fac mueve tasa_iva.tasa_iva_porc 
		{
			neto_no_gravado_cc=neto_cc
			neto_cc=0.00
		}
		//07/06/2010 hasta //////////
	}
	else
	{// E
			neto_no_gravado_cc=subtotal2  //07/06/2010
			//neto_cc=subtotal2  //07/06/2010
			neto_cc=0.00  //07/06/2010
			iva1_imp_cc=0.00
			total_cc=subtotal2
	}
	importe_en_letras=globals.nro_a_letra(total);
}
else
{
	globals.DIALOGS.showWarningDialog('Aviso','Cliente no está informado ','OK')
}
}

/**
 * @returns {Boolean} allow hide
 *
 * @properties={typeid:24,uuid:"D20BAB9C-0783-4B7E-BD7E-24A72850D96E"}
 */
function salir_fac() 
{  // si salia del facturador sin haber confirmado, luego en el form que se usaba a 
   // continuacion no grababa los resistros que se daban de alta 19/11/2009
	if (es_preview== 0)  // 10/09/2010
	{
	    var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir?' ,  'Si', 'No')
		if (resp == 'Si')
		{
			databaseManager.revertEditedRecords()
			databaseManager.setAutoSave(true)
		}
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"3D301D20-7D2C-46EE-84E3-3B60C090616F"}
 */
function Cancelar() 
{
	databaseManager.revertEditedRecords()
	Iniciar();
}

/**
 * @properties={typeid:24,uuid:"A70266E0-A62A-402B-9057-B4AA44306A64"}
 */
function eliminar_renglon() 
{
	var found = fac_cabecera_to_fac_detalle_viajes.getSize()
	if (found==0)
	{
		globals.iva_del_producto=null;
		descuento=null
	    descuento_imp=null
	    iva1_imp=null
	    iva1_porc=null
	    subtotal1=null
	    subtotal2=null
	    total=null
	}
	else
	{
	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea dar de baja? ',  'Si', 'No')
	if (resp == 'Si')
	{
		fac_cabecera_to_fac_detalle_viajes.deleteRecord()
		forms.fac.calculo_total()  // recalcula los totales
		
		var found = fac_cabecera_to_fac_detalle_viajes.getSize()
		if (found==0)
		{
		globals.iva_del_producto=null;
		descuento=null
	    descuento_imp=null
	    iva1_imp=null
	    iva1_porc=null
	    subtotal1=null
	    subtotal2=null
	    total=null
		}		
	}
	}
}

/**
 * @properties={typeid:24,uuid:"46AF4540-F4C6-4F02-8685-77430C2FF890"}
 */
function agregar_renglon() 
{  	// llamar al otro form para seleccionar la factura de viaje.
	if (cond_pago_id==null || fecha==null || nota==null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe completar los datos primero','OK')
		return;
	}
	if (cliente_id!=null)
	{
		var $win = application.createWindow('ver_fac_viajes',JSWindow.MODAL_DIALOG)
		$win.title = 'Facturas de viajes'
		forms.ncyd_viajes_3.controller.show($win)
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe elegir cliente primero','OK')
	}	
	// vuelve del anterior form con las columnas de fac_detalle dadas de alta y los datos de los viajes marcados
}

/**
 *
 * @properties={typeid:24,uuid:"6CD797D1-BEA5-40E7-BA17-94F9DDB788F2"}
 */
function Iniciar() 
{
    databaseManager.setAutoSave(false)
	controller.newRecord();
	descuento=null;
	descuento_imp=null;
	fecha = new Date();
	tipo_doc=2;  // credito
	globals.iva_del_producto=null;
	es_nro_manual=0;
	elements.nro_factura.editable=false;
	globals.marca_primer_find = 0;
	letra=null // 09/06/2010  FC exportacion p/no extranjero
	globals.es_fc_exportacion=0// 09/06/2010  FC exportacion p/no extranjero
	es_preview = 0;
	nota=null;
	fecha_vencimiento=null;
	cond_pago_id=null;
}

/**
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"AD3A0340-2CCD-47C5-B9C3-24F2915472AD"}
 */
function ver_es_nro_manual() 
{
	if (es_nro_manual==1)
	{
		elements.nro_factura.requestFocus();
		elements.nro_factura.editable=true	
	}
	else
	{
		elements.nro_factura.editable=false
		nro_factura=null; //01/10/2010
	}
	return true
}

/**
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"A120336B-3189-4438-9422-3EB941F9EB9B"}
 */
function ver_existe_ctacte() 
{
	if (es_nro_manual==1)
	{
		// validar en fac_cabecera  01/10/2010
		globals.fac_cabecera_duplicacion(letra,sucursal,nro_factura)
		if (globals.fact_filas!=0)  // si es cero, la factura no existe
		{
			globals.DIALOGS.showWarningDialog('Aviso','Ya existe ' + fac_cabecera_to_tipo_doc.descripcion + ' ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_factura,'00000000'),'OK')
		}
	}
	return true
}

/**
 * Handle focus element loosing focus.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"48DDF3FF-9877-41ED-9C4B-D6010234E787"}
 */
function validar_cliente(event) 
{
	if (cliente_id==null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Cliente no informado','OK')
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"E93B0369-9836-4863-B9D5-28F2F6CF80F3"}
 */
function onAction_exportacion_inscripto() // 09/06/2010  FC exportacion p/no extranjero
{
	if (globals.es_fc_exportacion==1)
	{
		letra="E";
		iva1_porc=0;    
		globals.multi=1; 
		sucursal=2  ////////// 22/092010 punto venta 2 para FC de exportacion
	}
	else
	{
		letra=null;
		iva1_porc=null;
		sucursal=globals.gSucursal  ////////// 22/092010 punto venta 1 para FC de normal
	}
}
